#https://blog.csdn.net/fenglingguitar/article/details/146056008
import os
from langchain_community.llms import Tongyi
#https://blog.csdn.net/zhishi0000/article/details/146470590
from langchain.agents import initialize_agent, load_tools, AgentType
import json

llm = Tongyi()
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool
from wwmath import funsig
from other.ml import svm
# 定义工具：计算平方
def square_number(n: str):
    return int(n) ** 2

def sigx(arg):

     

    print(arg)
    print(type(arg))
    agrs=arg.split(",")
    xx = [int(item) for item in agrs]
    print((xx))
    z=funsig.funcall("fun1",xx)
    return z;


def sigx2(arg):

     

    print(arg)
    print(type(arg))
    arg = json.loads(arg)  
    xx = [arg["yw"],arg["sx"]]
    print((xx))
    z=funsig.funcall("fun1",xx)
    return z;

def svmcls(arg):
    print(arg)
    print(type(arg))
    agrs=arg.split(",")
    xx = [[float(item) for item in agrs]]
    y=svm.predict(xx)
    print(y)
    return y


square_tool = Tool(name="Square Calculator", func=square_number, description="计算一个数的平方")
sigx_tool = Tool(name="sigx", func=sigx, description="根据语文、数学两个科目的绩点计算升学权重,输入参数是参数用英文逗号分开，例如：1,2")
sigx_tool2 = Tool(name="sigx", func=sigx2, description="根据语文(yw)、数学(sx)两个科目的绩点计算升学权重,输入参数是json 格式例如，")
sigx_tool3 = Tool(name="svmcls", func=svmcls, description="根据语文(yw)、数学(sx),英语(yy)、体育(ty)四个科目的绩点进行分类,输入参数是参数用英文逗号分开，例如：4.1,3.2,1,3")


# 初始化代理
agent = initialize_agent(
    tools=[square_tool,sigx_tool,sigx_tool3],
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)
def test():
    #response = agent.run("我的语文时 9 个绩点，英语是 10 个绩点，数学是8个绩点，我要计算升学权重")
    #response = agent.run("我的语文 9 个绩点，英语是 10 个绩点,我要计算升学权重")
    response = agent.run("我的语文 4.7 个绩点，数学是 3.2 个绩点,英语是 1.3 个绩点,体育是 0.2 个绩点,我要分类一下我的归属")
    print(response)  # 输出: 25
    return response

 
